package com.chen.controller;

import com.chen.pojo.common.PageResult;
import com.chen.pojo.dto.UserDto;
import com.chen.pojo.vo.TaskWorkVo;
import com.chen.pojo.vo.UserInfoVo;
import com.chen.pojo.vo.UserVo;
import com.chen.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author chen
 * @version 1.0
 * @create_date 2025/8/20
 * 用户管理
 */
@Slf4j
@RestController
@RequestMapping("/api/user-service/user")
public class UserController {
    @Autowired
    private UserService userService;

    // 查询员工信息
    @GetMapping("/{userId}")
    public UserInfoVo getUserById(@PathVariable Integer userId) {
        return userService.getUserInfoById(userId);
    }

    // 查询工作量列表
    @GetMapping("/searchUserWork")
    public PageResult<TaskWorkVo> searchUserWork(Integer pageIndex, Integer pageSize,
                                                 String userName, Boolean isRepair) {
        return userService.searchUserWork(pageIndex, pageSize, userName, isRepair);
    }


    // 根据设备编号获取该设备所在区域的用户
    @GetMapping("/operatorList/{innerCode}")
    public List<UserVo> getUserByInnerCode(@PathVariable String innerCode) {
        return userService.getUserByInnerCode(innerCode);
    }

    /**
     * 分页查询
     *
     * @param pageIndex 起始页
     * @param pageSize  页大小
     * @param userName  用户名
     * @return 结果
     */
    @GetMapping("/search")
    public PageResult<UserVo> searchList(Integer pageIndex, Integer pageSize, String userName) {
        log.info("开始分页查询，当前页：{}，页面显示条数：{}，查询条件：用户名称-{}", pageIndex, pageSize, userName);
        return userService.searchList(pageIndex, pageSize, userName);
    }

    /**
     * 新增人员
     *
     * @param userDto 人员信息
     * @return 结果
     */
    @PostMapping
    public Boolean addUser(@RequestBody UserDto userDto) {
        log.info("新增人员");
        return userService.addUser(userDto);
    }

    /**
     * 修海人员信息
     *
     * @param userId  人员id
     * @param userDto 人员信息
     * @return 结果
     */
    @PutMapping("/{userId}")
    public Boolean updateUser(@PathVariable Integer userId, @RequestBody UserDto userDto) {
        log.info("修改人员信息，人员id：{}", userId);
        return userService.updateUser(userId, userDto);
    }

    /**
     * 删除人员信息
     *
     * @param userId 人员id
     * @return 结果
     */
    @DeleteMapping("/{userId}")
    public Boolean deleteUser(@PathVariable Integer userId) {
        log.info("删除人员信息，人员id：{}", userId);
        return userService.deleteUser(userId);
    }
}
